import request from '@/utils/request'

// 文件管理相关API接口

// 学习资料列表查询参数接口
export interface LearningMaterialListParams {
  current?: number          // 当前页码，示例值(1)
  size?: number            // 每页大小，示例值(10)
  auditStatus?: number     // 审核状态(0-待审核，1-通过，2-拒绝)
  collegeName?: string     // 学院名称
  subjectType?: string     // 学科分类
  uploaderId?: number      // 上传者ID
  keyword?: string         // 关键词搜索
  orderBy?: string         // 排序方式: audit_time(审核时间), download(下载量), view(浏览量), time(上传时间)
}

/**
 * 获取每日上传统计数据
 * GET /api/file/admin/learning-material/daily-upload-stats
 */
export const getDailyUploadStats = () => {
  return request({
    url: '/api/file/admin/learning-material/daily-upload-stats',
    method: 'get',
  })
}

/**
 * 获取审核统计数据
 * GET /api/file/admin/learning-material/audit-stats
 */
export const getAuditStats = () => {
  return request({
    url: '/api/file/admin/learning-material/audit-stats',
    method: 'get',
  })
}

/**
 * 获取学习资料列表
 * GET /api/file/admin/learning-material/list
 */
export const getLearningMaterialList = (params?: LearningMaterialListParams) => {
  return request({
    url: '/api/file/admin/learning-material/list',
    method: 'get',
    params
  })
}

/**
 * 强制删除学习资料
 * DELETE /api/file/admin/learning-material/{id}/force
 */
export const deleteLearningMaterial = (id: number) => {
  return request({
    url: `/api/file/admin/learning-material/${id}/force`,
    method: 'delete',
  })
}

// 审核DTO类型
export interface MaterialAuditDTO {
  materialId: number    // 学习资料ID
  auditStatus: number   // 审核状态：0-待审核，1-通过，2-拒绝
  auditReason: string   // 审核意见/拒绝原因
}

// 审核相关接口参数类型
export interface AuditMaterialParams {
  adminId: number              // 管理员ID
  materialAuditDTO: MaterialAuditDTO  // 审核信息DTO
}

// 批量审核DTO类型
export interface BatchMaterialAuditDTO {
  materialIds: number[] // 学习资料ID数组
  auditStatus: number   // 审核状态：0-待审核，1-通过，2-拒绝
  auditReason: string   // 审核意见/拒绝原因
}

// 批量审核接口参数类型
export interface BatchAuditMaterialParams {
  adminId: number                        // 管理员ID
  batchMaterialAuditDTO: BatchMaterialAuditDTO  // 批量审核信息DTO
}

/**
 * 审核学习资料
 * POST /api/file/admin/learning-material/audit
 */
export const auditLearningMaterial = (data: AuditMaterialParams) => {
  return request({
    url: '/api/file/admin/learning-material/audit',
    method: 'post',
    data
  })
}

/**
 * 批量审核学习资料
 * POST /api/file/admin/learning-material/batch-audit
 */
export const batchAuditLearningMaterial = (data: BatchAuditMaterialParams) => {
  return request({
    url: '/api/file/admin/learning-material/batch-audit',
    method: 'post',
    data
  })
}
